#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
//int mystrlen1(char* str)
//{
//	int count = 0;
//	while (*str != '\0')
//	{
//		count++;
//		str++;
//	}
//	return count;
//}
//int mystrlen2(char* str)
//{
//	if (*str != '\0')
//	{
//		return 1+mystrlen2(str + 1);
//	}
//	else
//	{
//		return 0;
//	}
//}
//int main()
//{
//	char a[] = "abcdef";
//	int m = strlen(a);
//	int str = mystrlen1(a);
//	int len = mystrlen2(a);
//	printf("%d\n", str);
//	printf("%d\n", m);
//	printf("%d\n", len);
//	return 0;
//}
//void nixu(char* m)
//{
//	int len = strlen(m);
//	char tmp = *m;
//	*m = *(m + len - 1);
//	*(m + len - 1) = '\0';
//	if (strlen(m + 1) >= 2)
//	{
//		nixu(m + 1);
//	}
//	*(m + len - 1) = tmp;
//}
//int main()
//{
//	char a[] = "abcdef";
//	int i = 0;
//	int n = strlen(a);
//	nixu(a);
//	for (i = 0; i < +n; i++)
//	{
//		printf("%c ", a[i]);
//	}
//	return 0;
//}
//int jiafa(int m)
//{
//	if (m > 9)
//	{
//		return jiafa(m / 10) + m % 10;
//	}
//	return m;
//}
//int main()
//{
//	int m = 0;
//	scanf("%d", &m);
//	int a = jiafa(m);
//	printf("%d", a);
//	return 0;
//}
//int cifang(int m, int n)
//{
//	if (n > 1)
//	{
//		return m * cifang(m, n-1);
//	}
//	return m;
//}
//int main()
//{
//	int a = 0;
//	int k = 0;
//	scanf("%d%d", &a, &k);
//	int m = cifang(a, k);
//	printf("%d", m);
//	return 0;
//}int m = 1;
int fip1(int x)
{
	int a = 1;
	int b = 1;
	int c = 1;
	while (x > 2)
	{
		c = a + b;
		a = b;
		b = c;
		x--;
	}
	return c;
	/*if (a <= 2)
	{
		return 1;
	}
	else
	{

		int m = 1;
		int n = 1;
		int x = 0;
		int i = 0;
		for (i = 3; i <= a; i++)
		{
			x = m + n;
			m = n;
			n = x;
		}
		return x;
	}*/
}
int fip2(int a)
{
	if (a < 3)
	{
		return 1;
	}
	else
	{
		return fip2(a - 1) + fip2(a - 2);
	}
}
int main()
{ 
	int a = 0;
	scanf("%d", &a);
	int x = fip1(a);
	int y = fip2(a);
	printf("%d\n", x);
	printf("%d\n", y);
	return 0;
}